package per.hx.bs.sys.serviceimpl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import per.hx.bs.common.config.HuXingBsConfig;
import per.hx.bs.sys.dao.SysFileDao;
import per.hx.bs.entity.sys.SysFileDO;

import java.io.File;
import java.util.Arrays;
import java.util.List;

/**
 * @author HuXing
 * @date 2018/3/21  17:14
 * Describe 文件操作实现
 */
@Transactional(rollbackFor = Exception.class)
@RestController
@RequestMapping(value = "sys-service/file")
public class SysFileApiServiceImpl {

    private final
    SysFileDao sysFileDao;
    private final
    HuXingBsConfig huXingBsConfig;

    @Autowired
    public SysFileApiServiceImpl(SysFileDao sysFileDao, HuXingBsConfig huXingBsConfig) {
        this.sysFileDao = sysFileDao;
        this.huXingBsConfig = huXingBsConfig;
    }

    /**
     * 获取文件信息
     *
     * @param id 文件Id
     * @return 文件信息
     */
    @GetMapping(value = "/get/{id}")
    public SysFileDO get(@PathVariable("id") Long id) {
        return sysFileDao.selectById(id);
    }

    /**
     * 检查文件是否存在
     *
     * @param url 问价路径
     * @return 文件状态
     */
    @GetMapping(value = "/boolean")
    public Boolean isExist(@RequestParam("url") String url) {
        Boolean isExist = false;
        if (!StringUtils.isEmpty(url)) {
            String filePath = url.replace("/images/", "");
            filePath = huXingBsConfig.getUploadPath() + filePath;
            File file = new File(filePath);
            if (file.exists()) {
                isExist = true;
            }
        }
        return isExist;
    }

    /**
     * 插入文件上传信息
     *
     * @param sysFileDO 文件 信息
     * @return 影响行数
     */
    @PostMapping(value = "/insert")
    public Long insert(@RequestBody SysFileDO sysFileDO) {
        if (sysFileDao.insert(sysFileDO) > 0) {
            return sysFileDO.getId();
        } else {
            return 0L;
        }
    }

    /**
     * 获取 文件列表
     *
     * @param ids ids
     * @return 文件信息列表
     */
    @GetMapping(value = "/selectList")
    public List<SysFileDO> selectList(@RequestParam("ids") Long[] ids) {
        return sysFileDao.selectBatchIds(Arrays.asList(ids));
    }

}
